Reading the data¶
Lately, the .fits data was transformed into .csv and saved in database/csv_files. We are going to import a light curve sample and work with it.
[7]:
FILE_PATH = r'C:\Users\guisa\Google Drive\01 - Iniciação Científica\02 - Datasets\csv_files\EN2_STAR_CHR_0101086161_20070516T060226_20071005T074409.csv'
[8]:
import pandas as pd
data_sample = pd.read_csv(FILE_PATH)
display(data_sample)
| DATE | WHITEFLUX | |
|---|---|---|
| 0 | 2007-05-16 18:10:55.071642 | 112626.77 |
| 1 | 2007-05-16 18:19:27.113766 | 112605.61 |
| 2 | 2007-05-16 18:27:59.155929 | 112771.50 |
| 3 | 2007-05-16 18:36:31.198092 | 113113.60 |
| 4 | 2007-05-16 18:45:03.240256 | 112621.79 |
| ... | ... | ... |
| 23946 | 2007-10-05 19:08:02.358665 | 112438.61 |
| 23947 | 2007-10-05 19:16:34.313684 | 112406.01 |
| 23948 | 2007-10-05 19:25:06.268742 | 112496.13 |
| 23949 | 2007-10-05 19:33:38.223801 | 112344.83 |
| 23950 | 2007-10-05 19:42:10.178859 | 112318.50 |
23951 rows × 2 columns
[9]:
import numpy as np
x = data_sample.DATE.to_numpy()
y = data_sample.WHITEFLUX.to_numpy()
Median Filter¶
O filtro mediano, por sua vez, é aplicado de uma forma consideravelmente diferente, na qual cada valor dos dados filtrados corresponde a uma mediana de um grupo de valores adjacentes nos dados originais. Esse filtro já é utilizado com certa frequência em análises de curvas de luz.
[18]:
!pip install control
from tools import *
WARNING: You are using pip version 21.1.1; however, version 21.1.3 is available.
You should consider upgrading via the 'c:\users\guisa\appdata\local\programs\python\python38\python.exe -m pip install --upgrade pip' command.
Requirement already satisfied: control in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (0.9.0)
Requirement already satisfied: numpy in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from control) (1.19.5)
Requirement already satisfied: matplotlib in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from control) (3.3.4)
Requirement already satisfied: scipy in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from control) (1.6.1)
Requirement already satisfied: kiwisolver>=1.0.1 in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from matplotlib->control) (1.3.1)
Requirement already satisfied: cycler>=0.10 in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from matplotlib->control) (0.10.0)
Requirement already satisfied: python-dateutil>=2.1 in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from matplotlib->control) (2.8.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from matplotlib->control) (2.4.7)
Requirement already satisfied: pillow>=6.2.0 in c:\users\guisa\appdata\local\programs\python\python38\lib\site-packages (from matplotlib->control) (8.1.0)
Requirement already satisfied: six in c:\users\guisa\appdata\roaming\python\python38\site-packages (from cycler>=0.10->matplotlib->control) (1.15.0)
from scipy.signal import medfilt
def median_filter(array, window_size): return medfilt(array, window_size)
Reference: Scipy Documentation
Choosing the best Median parameter¶
On filters module, we can pass median on the filter_technique and it will makes all the procedures for the Median filter.
[37]:
filtered = median_filter(y, 1)
viz.view_filter_results(x, y, x, filtered)
[38]:
filtered = median_filter(y, 3)
viz.view_filter_results(x, y, x, filtered)
[39]:
filtered = median_filter(y, 5)
viz.view_filter_results(x, y, x, filtered)
[40]:
filtered = median_filter(y, 7)
viz.view_filter_results(x, y, x, filtered)
[41]:
filtered = median_filter(y, 9)
viz.view_filter_results(x, y, x, filtered)
[42]:
filtered = median_filter(y, 11)
viz.view_filter_results(x, y, x, filtered)
[ ]: